type: grid
columns: 1
square: false
cards:
  - type: grid
    columns: 1
    square: false
    cards:
      - type: custom:apexcharts-card
        apex_config:
          chart:
            height: 350
        header:
          title: Elpriser pr. time (dynamiske farver)
          show: true
          show_states: false
        graph_span: 48h
        now:
          show: true
          label: Nu
        span:
          start: day
        all_series_config:
          unit: ' kr.'
        yaxis:
          - min: 0
            apex_config:
              tickAmount: 6
        series:
          - entity: sensor.energi_data_service
            name: Billig
            type: column
            color: '#4CAF50'
            show:
              legend_value: false
            data_generator: >
              let data = [];


              const avg = entity.attributes.today_mean;

              const greenLimit = avg * 0.8;


              let prices = entity.attributes.raw_today || [];


              if (entity.attributes.tomorrow_valid &&
              entity.attributes.raw_tomorrow) {
                prices = prices.concat(entity.attributes.raw_tomorrow);
              }


              prices.forEach(item => {
                const p = item.price;

                data.push([
                  new Date(item.hour).getTime(),
                  p < greenLimit ? p : null
                ]);
              });


              return data;
          - entity: sensor.energi_data_service
            name: Normal
            type: column
            color: '#FFEB3B'
            show:
              legend_value: false
            data_generator: >
              let data = [];


              const avg = entity.attributes.today_mean;

              const greenLimit = avg * 0.8;

              const orangeLimit = avg * 1.2;


              let prices = entity.attributes.raw_today || [];


              if (entity.attributes.tomorrow_valid &&
              entity.attributes.raw_tomorrow) {
                prices = prices.concat(entity.attributes.raw_tomorrow);
              }


              prices.forEach(item => {
                const p = item.price;

                data.push([
                  new Date(item.hour).getTime(),
                  (p >= greenLimit && p < orangeLimit) ? p : null
                ]);
              });


              return data;
          - entity: sensor.energi_data_service
            name: Dyr
            type: column
            color: '#FF9800'
            show:
              legend_value: false
            data_generator: >
              let data = [];


              const avg = entity.attributes.today_mean;

              const orangeLimit = avg * 1.2;

              const redLimit = avg * 1.5;


              let prices = entity.attributes.raw_today || [];


              if (entity.attributes.tomorrow_valid &&
              entity.attributes.raw_tomorrow) {
                prices = prices.concat(entity.attributes.raw_tomorrow);
              }


              prices.forEach(item => {
                const p = item.price;

                data.push([
                  new Date(item.hour).getTime(),
                  (p >= orangeLimit && p < redLimit) ? p : null
                ]);
              });


              return data;
          - entity: sensor.energi_data_service
            name: Meget dyr
            type: column
            color: '#F44336'
            show:
              legend_value: false
            data_generator: >
              let data = [];


              const avg = entity.attributes.today_mean;

              const redLimit = avg * 1.5;


              let prices = entity.attributes.raw_today || [];


              if (entity.attributes.tomorrow_valid &&
              entity.attributes.raw_tomorrow) {
                prices = prices.concat(entity.attributes.raw_tomorrow);
              }


              prices.forEach(item => {
                const p = item.price;

                data.push([
                  new Date(item.hour).getTime(),
                  p >= redLimit ? p : null
                ]);
              });


              return data;
          - entity: sensor.elpriser_excl_afgift
            name: Excl. afgifter
            type: line
            color: '#03A9F4'
            stroke_width: 4
            extend_to: false
            show:
              extremas: true
              legend_value: false
            data_generator: |
              let data = [];

              if (entity.attributes.raw_today) {
                data = entity.attributes.raw_today.map((item) => [
                  new Date(item.hour).getTime(),
                  item.price
                ]);
              }

              if (entity.attributes.tomorrow_valid &&
                  entity.attributes.raw_tomorrow) {
                data = data.concat(
                  entity.attributes.raw_tomorrow.map((item) => [
                    new Date(item.hour).getTime(),
                    item.price
                  ])
                );
              }

              return data;
    grid_options:
      rows: auto
      columns: full
grid_options:
  rows: auto
  columns: full
